import axios from "axios"
import router from "../router"  //方便跳转到login页面
import El from 'element-ui';  //方便弹出错误信息
let http = axios.create({
    // baseURL: "/api",//基础地址
    timeout: 1000 * 10,//超时设置
    withCredentials: true
})

// 设置拦截器 拦截的目的是而为了给每一个请求加上相同的请求头

http.interceptors.request.use(config=>{
    //config 就是拦截的每一个请求
    //除了登陆页面和验证码页面意外  其它页面都要带上 authorization这个请求头，值是token
    let token =localStorage.getItem("app-token")

    let pathList=["/user/login","/user/getCaphcha"]  //不需要加请求头的路径清单
    //some的用法就是遍历pathList 查看里面有没有和请求的路径一致的请求，只有包含一个或者以上就会返回true否则返回false
    // let result =pathList.some(path=>path===config.url)
    // config.url就是拦截到的请求地址
    let result =pathList.includes(config.url)
    if(!result){
        config.headers.authorization =token
    }
    // 只有return config 就相当于放行
    return config
})//拦截请求


//拦截响应
//token失败的原因  token周期时间
//token时间失效  或者错误
//token校验失败，就要让页面跳转到登录页

http.interceptors.response.use(config=>{
    // console.log(config);
    // 如果响应的数据中，code===1004或者10022的时候,表示登入过期了，或者token验证失败，那么就而要跳转到登入页,并
// 且提示用户登入过期
if(config.data.code==="1004" || config.data.code==="10022"){
    localStorage.removeItem("app-token")
    router.push("/login")
    El.Message.error("登陆信息过期，请重新登陆")
}
    return config
})

export default http